<?php
/**
 * Subpacote do objeto CRUD
 *
 * @author William Borba <webwilliams@gmail.com>
 * @version 0.2.1
 * @copyright opensource.
 * @license http://creativecommons.org/licenses/by/3.0/
 * @link http://code.google.com/p/comphp/
 * @category framework
 * @package CRUD
 * @subpackage objFuncoesDados
 *
 *
 */
namespace bibliotecas\componentes\crud\funcoes
	{
		/**
		 * inclui namespaces da classe objBancoFuncoes
		 *
		 * @see objBancoFuncoes
		 *
		 */
		use bibliotecas\componentes\banco\abstracao\objBancoFuncoes as objBancoFuncoes;
		/**
		 * classe abstrata onde contem os metodos de tratamento dos dados de entrada,
		 * para serem passados posteriormente para a classe objBancoFuncoes()
		 *
		 * @see ObjBancoFuncoes
		 * @abstract objFuncoesDados
		 *
		 */
		abstract class objFuncoesDados extends objBancoFuncoes
			{
				/**
				 * metodo utilizado para armazenar as propriedades de entrada,
				 * seria a configuração
				 *
				 * @access protected
				 * @method array mtdDadosCRUD($parDados)
				 * @param array $parDados
				 * @return array $this->mtdBancoFuncoes($parDados)
				 *
				 */
				protected function mtdDadosCrud($parDados)
					{
						foreach ($parDados as $parDados['dcrud1'] => $parDados['dcrud2'])
							{
								if (!empty($this->proErros))
									{
										break;
									}
								$parDados['mtd'] = 'mtdDados' . substr($parDados['dcrud1'], 3);
								$this->proDadosCrud[$parDados['dcrud1']] = $this->$parDados['mtd']($this->proDadosCrud);
							}
						return $this->mtdBancoFuncoes($this->proDadosCrud);
					}
				/**
				 * metodo que recebe par de chave e valor onde a chave e a consulta ou
				 * comando SQL e o valor e um dos tipos abaixo
				 * [inserir, alterar, remover, consultar]
				 *
				 * @access private
				 * @param array $parDados
				 * @method array mtdDadosSQL($parDados)
				 * @return array $parDados['parSQL']
				 */
				private function mtdDadosSql($parDados)
					{
						if (empty($this->proErros) && !empty($parDados['parSql']))
							{
								foreach ($parDados['parSql'] as $parDados['ds1'] => $parDados['ds2'])
									{
										if (empty($parDados['ds1']) || empty($parDados['ds2']))
											{
												$this->mtdErros(array('mtdDadosSql' => array($parDados['ds1'] => $parDados['ds2'])));
												break;
											}
										else if ($parDados['ds2'] != 'exec' && $parDados['ds2'] != 'execute')
											{
												$this->mtdErros(array('mtdDadosSql' => array('tipo incorreto' => $parDados['ds2'])));
												break;
											}
									}
							}
						return $parDados['parSql'];
					}
			}
	}
?>